home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 21
/
Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso
/
Aminet
/
util
/
misc
/
gpatch.lha
/
GPatch
/
GPatch.dok
< prev
next >
Wrap
Text File
|
1997-07-05
|
5KB
|
121 lines
GCompare / GPatch 1.6
---------------------
Autor: Ralf Gruner, An der Sense 5a, D-02779 Großschönau
ralf.gruner@t-online.de
GCompare ist ein Programm zum Erzeugen von Patch-Dateien für den Vertrieb
von Updates irgendwelcher Programme oder anderer Dateien.
GPatch dient dazu, diese Updates auszuführen.
Natürlich weiß ich, daß es bereits brauchbare Patch-Generatoren für den
Amiga gibt. Aber leider habe ich nicht SAS-C (das wäre anders, wenn SAS
den Compiler noch verkaufen würde), und das Freeware-Programm, das ich im
Aminet gefunden habe, hat als erstes einen Absturz meines Rechners verursacht
und sich damit sofort disqualifiziert.
Deshalb habe ich also einen neuen Patcher geschrieben.
Die wesentlichen Eigenschaften sind:
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
-Die Patch-Datei kann Patches für eine beliebige Anzahl von Dateien enthalten.
Dadurch ist es möglich, Updates für mehrere Versionen eines Programms
zusammen zu vertreiben. Wenn sich die Verzeichnis-Struktur des Produktes
nicht geändert hat, findet der Patcher selbständig die benötigten Patches,
ohne daß sich Ihr Skript darum kümmern muß.
Außerdem können Sie die Patches für verschiedene Dateien in einer einzigen
Patch-Datei unterbringen.
-Das Format der Patch-Datei ist bezüglich der Dateigröße aufwendig optimiert.
Obwohl ich nicht allzuviele ähnliche Programme kenne, möchte ich behaupten,
daß GCompare in den meisten Fällen die kürzesten Patchdateien aller
verfügbarer Patchprogramme erzeugt.
-Um zu verhindern, daß beim Anwender beschädigte Dateien ankommen, enthalten
die Programme eine sehr zuverlässige Fehlererkennung (32-Bit-CRC-Signaturen
für alle Dateien). Wenn keine Fehlermeldungen auftreten, dann können Sie
sicher sein, daß die Ergebnisse des Patch-Vorgangs perfekt sind.
Benutzung:
¯¯¯¯¯¯¯¯¯¯
GCompare und GPatch sind Shell-Befehle.
Syntax:
GCompare <alte Datei> <neue Datei> <Patchdatei>
GPatch <alte Datei> <Patchdatei> <neue Datei>
Wenn GCompare eine bereits bestehende Patchdatei findet, dann hängt es die
Patches an diese Datei an.
GPatch wählt die passenden Patches anhand der Dateilänge und der CRC-Signatur
aus.
Wenn die Programme keine Fehlermeldungen ausgeben, dann waren die jeweiligen
Vorgänge erfolgreich. Schwerwiegende Fehler werden immer von einem
Return-Code größer als 9 begleitet.
GCompare braucht genug Arbeitsspeicher, um die alte, die neue und die
Patchdatei gleichzeitig im Speicher halten zu können.
Wenn GCompare genug Speicher findet (10 mal die Dateigröße der alten Datei),
benutzt es einen schnellen Suchalgorithmus (verkettete Listen), andernfalls
arbeitet es mit linearer Suche.
Als Beispiel für die Anwendung der Patchprogramme habe ich Skripts für das
Erzeugen und Anwenden einer Patch-Datei eines fiktiven Programms beigelegt.
In dem Beispiel wird davon ausgegangen, daß verschiedene ältere Versionen
des Programms "MyProgram" in einem Archiv namens "Archive" liegen. Der Patch
für das Programm und eine Anleitung "MyProgram.readme" wird in diesem
Beispiel direkt auf der Programmdiskette "MyProgram" ausgeführt.
Diskussion:
¯¯¯¯¯¯¯¯¯¯¯
Inzwischen habe ich eine ganze Menge Mails mit Kommentaren zur Geschwindigkeit
und der Größe der resultierenden Patchdatei erhalten.
Einige fanden die Patchdatei viel kleiner als die anderer Patcher,
andere wiederum nicht, und allen ist das Patchprogramm nicht schnell genug.
Zur Zeit arbeite ich bereits an einem neuen Dateiformat. Bei den meisten Tests
habe ich damit um ca. 15% kürzere Patchdateien erhalten. Aber Sie sollten
wissen, daß es nicht möglich ist, immer das kürzeste Ergebnis zu bekommen,
weil die Größe der Datei vom Abstand der passenden Daten abhängen und dem Weg,
diesen Abstand zu adressieren.
Die nächste Version von GPatch wird drei mögliche Dateiformate zur Verfügung
stellen und einen Optimierer erhalten. Dafür brauche ich aber noch einige Zeit
und habe deshalb diese fehlerkorrigierte Version veröffentlicht.
Und zur Geschwindigkeit: Es gibt wirklich keinen Weg, GCompare wesentlich
schneller zu machen. GCompare sucht passende Daten in der gesamten alten Datei
(und nicht nur in einem Relativbereich wie andere Patchprogramme).
Die nächste Version wird zwar eine schnelle Betriebsart haben, aber diese kann
keineswegs die besten Ergebnisse liefern.
Vertrieb:
¯¯¯¯¯¯¯¯¯
GCompare und GPatch sind Freeware. Sie können beliebig eingesetzt werden,
einschließlich der Anwendung für kommerzielle Programme.
Wenn Sie aber Wert auf zukünftige Updates legen, dann senden Sie mir bitte
eine eMail, damit ich weiß, daß es überhaupt Benutzer der Programme gibt.
Es gibt noch einiges zu optimieren, aber die Zeit dafür nehme ich mir nur,
wenn es auch jemand braucht.
Die Änderungsliste der Programme finden Sie in der englischen Anleitung.
Und (wer's lesen will):
Rechtliches
¯¯¯¯¯¯¯¯¯¯¯
Bei der Entwicklung der Software wurde mit allergrößter Sorgfalt vorgegangen.
Trotzdem sind Fehler nicht vollständig ausgeschlossen. Der Autor übernimmt
keine Haftung für Schäden, die direkt oder indirekt auf die Benutzung
seiner Programme zurückzuführen sind.
Ralf Gruner